#ifndef __NULL_EXAPTION__
#define __NULL_EXAPTION__
#include "Base.h"
#ifndef CC_BC32
#define GEN_NULL_ERROR(message) throw lampe::exception::NullException(__LINE__,__FILE__,__FUNCTION__,message)
#else
#define GEN_NULL_ERROR(message) throw lampe::exception::NullException(message)
#endif
#define CHECKNULL(obj) if (obj==0) GEN_NULL_ERROR(lampe::String(#obj)+" is NULL")

namespace lampe{
namespace exception{

/***
* @class NullException
* Класс ошибки, который нужно "выкидывать" когда какие-то нужные данные равны NULL
*
* Пример:
* try{
*	GEN_NULL_ERROR("Пример генерации NULL ошибки");
* }catch(NullException e){
*	printf("catched NULL errror! %s\n",e.what());
* }
*
* */
class NullException:public Base{
public:
#ifndef CC_BC32
	NullException(u32 l,String f,String m,String m2):Base(l,f,m,m2){
		//nothing
	}
#else
	NullException(String m2):Base(m2){
		//nothing
	}
#endif
	virtual ~NullException() throw(){
		//nothing
	}
};

}//namespace exception
}//namespace lampe
#endif
